package com.winbomb.kingcard;

/**
 * 交涉的接口类
 * 
 * 所谓交涉，即远距离进攻时，经过别人的领地时需要进行交涉。
 * 
 * 正常情况下，需要向对方提供三张牌让对方从中选择一张。
 * 
 * 当该领地为自己属邦时不需要进行交涉。对方可以选择不要这张牌。
 * 
 * @author winbomb
 * 
 */
public interface INegotiate {

	/**
	 * 新建一次交涉行动
	 * 
	 * @param giver
	 * @param accepter
	 */
	public void newNegotiate(IPlayer giver, IPlayer accepter);

	/**
	 * 开始交涉
	 */
	public void start();

	/**
	 * 获取作为礼物的牌
	 * 
	 * @return
	 */
	public ICard[] getGiftCards();

	/**
	 * 
	 * @param index
	 */
	public void selectGift(int index);

	/**
	 * 设置谈判结果
	 */
	public void setResult(NegoResult result);

	/**
	 * 获得谈判结果
	 * 
	 * @return
	 */
	public NegoResult getResult();

	/**
	 * 完成
	 */
	public void finish();

	public static enum NegoResult {
		AGREE, // 同意通过
		DENY, // 拒绝通过
		REQUIRE, // 条件通过
	}

}
